import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import './plugins/element.js'
import axios from 'axios'
import './assets/css/global.css'
import { MessageBox, Message } from 'element-ui';
import router1 from './router';
import * as echarts from 'echarts';
Vue.config.productionTip = false


axios.defaults.withCredentials=true
// 创建echarts实例
Vue.prototype.$echarts = echarts;
// 创建一个带有修改后配置的 axios 实例
const http = axios.create({

  // 设置基础 URL
  baseURL: process.env.VUE_APP_BASE_URL,
  // baseURL: 'http://1.92.141.215:8800',
  timeout: 10000, // 设置超时时间为10秒
});

// 将修改后的 axios 实例设置为 Vue 的原型属性
Vue.prototype.$http = http;

// 添加请求拦截器
http.interceptors.request.use(
  function(config) {
    // 在发送请求之前做些什么
    const token = localStorage.getItem('token');
    config.headers.token = token; // 在请求头中添加 token
    return config;
  },
  function(error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
http.interceptors.response.use(response => {
  // 检查响应状态码是否为 401
  if (response.data.code === 401) {
    MessageBox.alert("登录过期，请重新登录", "提示", {
      confirmButtonText: '确定',
      type: 'warning',
      callback: () => {
        localStorage.removeItem('token');
        localStorage.removeItem('routeHistory');
        //如果当前的路径不是login则跳转到login
        if (router1.currentRoute.path !== '/login') {
          router1.push('/login');
        }
      }
    });
  }
  return response;
}, error => {
  // 处理错误响应中的 401
  if (error.response && error.response.data && error.response.data.code === 401) {
    MessageBox.alert("登录过期，请重新登录", "提示", {
      confirmButtonText: '确定',
      type: 'warning',
      callback: () => {
        localStorage.removeItem('token');
        localStorage.removeItem('routeHistory');
        router1.push('/login');
      }
    });
  }
  return Promise.reject(error);
});


new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
